package cc.sunni.neti;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

import java.util.List;
import java.util.UUID;

/**
 * @author jl
 * @since 2021/2/12 21:56
 */
public class KillTask implements Runnable {
    @Override
    public void run() {
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.select(0); // 使用0号逻辑库
        int num = Integer.parseInt(jedis.get("kill_num"));
        // 乐观锁
        if (num > 0) {
            // 观察数据
            jedis.watch("kill_num", "kill_user");
            // 开启事务
            Transaction transaction = jedis.multi();
            // 修改库存
            transaction.decr("kill_num");
            // 保存用户
            transaction.rpush("kill_user", UUID.randomUUID().toString());
            // 提交事务
            transaction.exec();
        } else {
            // 关闭线程池
            SeckillDemo.pool.shutdown();
        }
        jedis.close();

    }
}
